﻿using System;
using System.Collections.Generic;
using System.Text;

namespace TemplateEngine.Parser
{
	/// <summary>
	/// 表示 Token 对象。
	/// </summary>
	public class Token
	{
		#region 私有字段
		
		private int _Line;
		private int _Col;
		private string _Data;
		private TokenKind _TokenKind;

		#endregion

		#region 构造函数
		
		/// <summary>
		/// 初始化 Token 对象。
		/// </summary>
		/// <param name="kind">指定 Token 类型。</param>
		/// <param name="data">指定 Token 内容。</param>
		/// <param name="line">指定 Token 所在的行数</param>
		/// <param name="col">指定 Token 所在的列数</param>
		public Token(TokenKind kind, string data, int line, int col)
		{
			_TokenKind = kind;
			_Line = line;
			_Col = col;
			_Data = data;
		}

		#endregion

		#region 公有属性

		/// <summary>
		/// 获取 Token 所在的列数。
		/// </summary>
		public int Col
		{
			get { return _Col; }
		}

		/// <summary>
		///  设置或获取 Token 内容。
		/// </summary>
		public string Data
		{
			get { return _Data; }
			set { _Data = value; }
		}

		/// <summary>
		/// 获取 Token 所在的行数。
		/// </summary>
		public int Line
		{
			get { return _Line; }
		}

		/// <summary>
		/// 设置或获取 Token 类型。
		/// </summary>
		public TokenKind TokenKind
		{
			get { return _TokenKind; }
			set { _TokenKind = value; }
		}

		#endregion
	}
}
